package com.wn.demo04;

import com.wn.demo03.Person;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

/**
 * @author yellow Docter
 * @date 2024 -06-17
 * @desc
 *    stream的终止操作
 *    1、查找与匹配
 *
     * 方法          							描述
     * anyMatch(Predicate p)	检查是否至少匹配一个元素
     * findFirst()        					返回第一个元素
     * count()        						返回流中元素总数
     * max(Comparator c)   	   返回流中最大值
 *
 */
public class Demo01 {

    static List<Person> persons = Arrays.asList(
            new Person("马云", 48, 2000d),
            new Person("马化腾", 50, 3000d),
            new Person("雷军", 46, 4000d),
            new Person("刘强东", 47, 5000d),
            new Person("张朝阳", 50, 6000d),
            new Person("张朝阳", 50, 6000d),
            new Person("张一鸣", 50, 7000d),
            new Person("张一鸣", 50, 7000d)
    );

    public static void main(String[] args) {

//        persons.stream()
//                .distinct()
//                .forEach(e-> System.out.println("e = " + e));

        //去重以后的总数
        long count = persons.stream().distinct().count();
        System.out.println("count = " + count);

        //终止操作

        // Optional 是什么?
        //Optional 是一个容器 存储对象 可以判断对象是否为null
        // 获取容器中的值  get()
        Optional<Person> first = persons.stream().distinct().filter(e -> e.getSalary() > 5000).findFirst();
        Person person = first.get();
        System.out.println("person = " + person);

    }
}
